package persistencia.compartido;

import java.util.Iterator;

import persistencia.IAlmacen;
import persistencia.IEnsamblador;
import persistencia.IProducto;
import persistencia.excepciones.LectorIncompatible;

import compartido.IEntidad;

public class IteradorDeEntidades<T> implements Iterator<IEntidad> {
	protected Iterator<T> iterador;
	protected IEnsamblador ensamblador;
	protected IAlmacen almacen;
	
	public IteradorDeEntidades(Iterator<T> iterator, IEnsamblador ensamblador, IAlmacen almacen) {
		iterador = iterator;
		this.ensamblador = ensamblador;
		this.almacen = almacen;
	}
	
	@Override
	public boolean hasNext() {
		return iterador.hasNext();
	}

	@Override
	public IEntidad next() {
		IProducto p = (IProducto)iterador.next();
		try {
			return ensamblador.leer(p,almacen);
		} catch (LectorIncompatible e) {
			return null;
		}
	}

	@Override
	public void remove() {
		// Este iterador no modifica la secuencia.
	}
}
